home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / unixSyscall / RCS / sigblock.c,v < prev    next >
Text File  |  1988-07-29  |  2KB  |  115 lines

  1. head     1.2;
  2. access   ;
  3. symbols  ;
  4. locks    ; strict;
  5. comment  @ * @;
  6.  
  7.  
  8. 1.2
  9. date     88.07.29.18.39.27;  author ouster;  state Exp;
  10. branches ;
  11. next     1.1;
  12.  
  13. 1.1
  14. date     88.06.19.14.32.00;  author ouster;  state Exp;
  15. branches ;
  16. next     ;
  17.  
  18.  
  19. desc
  20. @@
  21.  
  22.  
  23. 1.2
  24. log
  25. @Lint.
  26. @
  27. text
  28. @/* 
  29.  * sigblock.c --
  30.  *
  31.  *    Procedure to map from Unix sigblock system call to Sprite.
  32.  *    Note: many Unix signals are not supported under Sprite.
  33.  *
  34.  * Copyright (C) 1986 Regents of the University of California
  35.  * All rights reserved.
  36.  */
  37.  
  38. #ifndef lint
  39. static char rcsid[] = "$Header: sigblock.c,v 1.1 88/06/19 14:32:00 ouster Exp $ SPRITE (Berkeley)";
  40. #endif not lint
  41.  
  42. #include "sprite.h"
  43. #include "sig.h"
  44.  
  45. #include "compatInt.h"
  46. #include <signal.h>
  47. #include <errno.h>
  48.  
  49.  
  50. /*
  51.  *----------------------------------------------------------------------
  52.  *
  53.  * sigblock --
  54.  *
  55.  *    Procedure to map from Unix sigblock system call to Sprite 
  56.  *    Sig_SetHoldMask.
  57.  *
  58.  * Results:
  59.  *    UNIX_ERROR is returned upon error, with the actual error code
  60.  *    stored in errno.  Upon success, the previous signal mask is returned.
  61.  *
  62.  * Side effects:
  63.  *    The current signal mask is modified.
  64.  *
  65.  *----------------------------------------------------------------------
  66.  */
  67.  
  68. int
  69. sigblock(mask)
  70.     int mask;            /* additional bits to mask */
  71. {
  72.     int spriteMask = 0;        /* equivalent mask for Sprite */
  73.     int oldSpriteMask;        /* old mask, in Sprite terms */
  74.     int oldMask = 0;        /* old mask, in Unix terms */
  75.     ReturnStatus status;    /* generic result code */
  76.  
  77.     status = Compat_UnixSigMaskToSprite(mask,&spriteMask);
  78.     if (status == FAILURE) {
  79.     errno = EINVAL;
  80.     return(UNIX_ERROR);
  81.     }
  82.     status = Compat_GetSigHoldMask(&oldSpriteMask);
  83.     if (status == FAILURE) {
  84.     errno = EINVAL;
  85.     return(UNIX_ERROR);
  86.     }
  87.     status = Sig_SetHoldMask(spriteMask | oldSpriteMask, (int *) NULL);
  88.     if (status != SUCCESS) {
  89.     errno = Compat_MapCode(status);
  90.     return(UNIX_ERROR);    
  91.     } else {
  92.     status = Compat_SpriteSigMaskToUnix(oldSpriteMask,&oldMask);
  93.     if (status == FAILURE) {
  94.         errno = EINVAL;
  95.         return(UNIX_ERROR);
  96.     }
  97.     return(oldMask);
  98.     }
  99. }
  100. @
  101.  
  102.  
  103. 1.1
  104. log
  105. @Initial revision
  106. @
  107. text
  108. @d12 1
  109. a12 1
  110. static char rcsid[] = "$Header: sigblock.c,v 1.2 86/04/17 21:53:11 andrew Exp $ SPRITE (Berkeley)";
  111. d60 1
  112. a60 1
  113.     status = Sig_SetHoldMask(spriteMask | oldSpriteMask, NULL);
  114. @
  115.